home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cdity / ModeProSrc.lha / MPNodes.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-30  |  2.0 KB  |  88 lines

  1. #include "ModePro.h"
  2.  
  3. struct DefaultNode *AllocDefaultNode(STRPTR Name)
  4. {
  5.   struct DefaultNode *dn;
  6.   
  7.   if(dn=AllocVec(sizeof(struct DefaultNode),MEMF_CLEAR|MEMF_PUBLIC))
  8.   {
  9.     if(Name)
  10.     {
  11.       if(dn->Def_Node.ln_Name=CopyString(Name,MEMF_CLEAR|MEMF_PUBLIC))
  12.         return(dn);
  13.     } //if noname
  14.     else
  15.       return(dn);
  16.     FreeVec(dn);
  17.   }
  18.   return(0);
  19. }
  20.  
  21. void FreeDNode(struct DefaultNode *dn)
  22. {
  23.   if(dn)
  24.   {
  25.     FreeVec(dn->Def_Node.ln_Name);
  26.     FreeVec(dn->Font.tta_Name);
  27.     FreeVec(dn->PubName);
  28.     FreeVec(dn->LockedPens);
  29.     FreeVec(dn->HotKey);
  30.     FreeVec(dn->Palette);
  31.     FreeVec(dn->BackdropFile);
  32.     FreeVec(dn);
  33.   }
  34. }
  35.  
  36. void FreeDefList(struct List *list)
  37. {
  38.   struct DefaultNode *n;
  39.   
  40.   while(n=(struct DefaultNode *)RemHead(list))
  41.     FreeDNode(n);
  42. }
  43.  
  44. void FreeAllDefLists(struct List *list)
  45. {
  46.   LONG l;
  47.   
  48.   for(l=0;l<NUM_LISTS;l++)
  49.     FreeDefList(&list[l]);
  50. }
  51.  
  52.  
  53. struct DefaultNode *DupDNode(struct DefaultNode *Src)
  54. {
  55.   struct DefaultNode *dnode=0;
  56.   
  57.   if(Src)
  58.   {
  59.     if(dnode=AllocVec(sizeof(struct DefaultNode),MEMF_PUBLIC|MEMF_CLEAR))
  60.     {
  61.       CopyMem(Src,dnode,sizeof(struct DefaultNode));
  62.  
  63.       dnode->Def_Node.ln_Succ=dnode->Def_Node.ln_Pred=0;
  64.       
  65.       dnode->Def_Node.ln_Name   =CopyString(Src->Def_Node.ln_Name       ,MEMF_PUBLIC);      
  66.       dnode->Font.tta_Name      =CopyString(Src->Font.tta_Name          ,MEMF_PUBLIC);
  67.  
  68.       if((dnode->PubName=CopyString(Src->PubName,MEMF_PUBLIC))==0)
  69.         dnode->PubOptions=0;
  70.       
  71.       dnode->LockedPens   =CopyString(Src->LockedPens,          MEMF_PUBLIC);
  72.       dnode->HotKey       =CopyString(Src->HotKey,              MEMF_PUBLIC);
  73.       dnode->BackdropFile =CopyString(Src->BackdropFile,        MEMF_PUBLIC);
  74.       
  75.       if(dnode->Palette=AllocVec(sizeof(struct RGB)*dnode->Colors,MEMF_PUBLIC))
  76.       {
  77.         CopyMem(Src->Palette,dnode->Palette,sizeof(struct RGB)*dnode->Colors);
  78.       }
  79.       else
  80.       {
  81.         dnode->Flags&=(~DNF_PALETTE);
  82.         dnode->Colors=0;
  83.       }
  84.     }
  85.   }
  86.   return(dnode);
  87. }
  88.